# -*- coding: utf-8 -*-
# @Author : zhaochen
# @Date   : 2019/1/23
# @File   : TX09_IllegalIndex_SC.py
# @E-mail : zhaochen@bbdservice.com

'''eof
name:违法违章指数
code:TX09_IllegalIndex_SC
tableName:
columnName:
groups:税务模块
dependencies:TX_SC_DSJ
type:常用指标
datasourceType:在线指标
description:
eof'''

import sys
import re
import datetime
reload(sys)
sys.setdefaultencoding('utf-8')

null_type_list = ['', ' ', None, 'null', 'Null', 'NULL', '/', '-', '--']

def getTable(table_Name):
    '''
    获取表
    :param x:
    :return:
    '''
    try:
        ic_data = TX_SC_DSJ['data'].get(table_Name)
        if ic_data in null_type_list:
            return None
        else:
            return ic_data if isinstance(ic_data, list) and len(ic_data) > 0 else [{}]
    except:
        return None

def TX09_IllegalIndex():
    try:
        syptWfwzxx = getTable('syptWfwzxx')
        if syptWfwzxx is None:
            return u'缺失值'
        elif syptWfwzxx == [{}]:
            return 0.0
        else:

            flag = []
            #违法违章类型  有登记时间+登记类型去重  无登记时间就不去重
            type01 = set()
            type02 = set()
            type03 = set()
            type04 = set()
            type05 = set()
            type06 = set()
            type07 = set()
            type08 = set()
            type09 = set()
            type99 = set()

            type01_list = []
            type02_list = []
            type03_list = []
            type04_list = []
            type05_list = []
            type06_list = []
            type07_list = []
            type08_list = []
            type09_list = []
            type99_list = []

            for i in syptWfwzxx:
                # 登记时间不为空
                if i.get('DJRQ') not in null_type_list:
                    if i.get('WFWZLX_DM') not in null_type_list:
                        if i.get('WFWZLX_DM') == '01':
                            type01.add((i.get('DJRQ') + i.get('WFWZLX_DM')))
                        elif i.get('WFWZLX_DM') == '02':
                            type02.add((i.get('DJRQ') + i.get('WFWZLX_DM')))
                        elif i.get('WFWZLX_DM') == '03':
                            type03.add((i.get('DJRQ') + i.get('WFWZLX_DM')))
                        elif i.get('WFWZLX_DM') == '04':
                            type04.add((i.get('DJRQ') + i.get('WFWZLX_DM')))
                        elif i.get('WFWZLX_DM') == '05':
                            type05.add((i.get('DJRQ') + i.get('WFWZLX_DM')))
                        elif i.get('WFWZLX_DM') == '06':
                            type06.add((i.get('DJRQ') + i.get('WFWZLX_DM')))
                        elif i.get('WFWZLX_DM') == '07':
                            type07.add((i.get('DJRQ') + i.get('WFWZLX_DM')))
                        elif i.get('WFWZLX_DM') == '08':
                            type08.add((i.get('DJRQ') + i.get('WFWZLX_DM')))
                        elif i.get('WFWZLX_DM') == '09':
                            type09.add((i.get('DJRQ') + i.get('WFWZLX_DM')))
                        elif i.get('WFWZLX_DM') == '99':
                            type99.add((i.get('DJRQ') + i.get('WFWZLX_DM')))
                        else:
                            continue
                    else:
                        flag.append(None)
                else:
                    #登记时间为空
                    if i.get('WFWZLX_DM') not in null_type_list:
                        if i.get('WFWZLX_DM') == '01':
                            type01_list.append(i.get('WFWZLX_DM'))
                        elif i.get('WFWZLX_DM') == '02':
                            type02_list.append(i.get('WFWZLX_DM'))
                        elif i.get('WFWZLX_DM') == '03':
                            type03_list.append(i.get('WFWZLX_DM'))
                        elif i.get('WFWZLX_DM') == '04':
                            type04_list.append(i.get('WFWZLX_DM'))
                        elif i.get('WFWZLX_DM') == '05':
                            type05_list.append(i.get('WFWZLX_DM'))
                        elif i.get('WFWZLX_DM') == '06':
                            type06_list.append(i.get('WFWZLX_DM'))
                        elif i.get('WFWZLX_DM') == '07':
                            type07_list.append(i.get('WFWZLX_DM'))
                        elif i.get('WFWZLX_DM') == '08':
                            type08_list.append(i.get('WFWZLX_DM'))
                        elif i.get('WFWZLX_DM') == '09':
                            type09_list.append(i.get('WFWZLX_DM'))
                        elif i.get('WFWZLX_DM') == '99':
                            type99_list.append(i.get('WFWZLX_DM'))
                        else:
                            continue
                    else:
                        flag.append(None)

            result1 = 0.4 * len(type01) + 0.6 * len(type02) + 0.6 * len(type03) + 0.0 * len(type04) + 0.1 * len(type05) \
                     + 0.0 * len(type06) + 0.0 * len(type07) + 0.0 * len(type08) + 0.6 * len(type09) + 0.0 * len(type99)
            #
            result2 = 0.4 * len(type01_list) + 0.6 * len(type02_list) + 0.6 * len(type03_list) + 0.0 * len(type04_list) + 0.1 * len(type05_list) \
                     + 0.0 * len(type06_list) + 0.0 * len(type07_list) + 0.0 * len(type08_list) + 0.6 * len(type09_list) + 0.0 * len(type99_list)
            if len(syptWfwzxx) == len(flag):
                return u'缺失值'
            else:
                return round(result1+result2, 4)
    except:
        return u'缺失值'

result = TX09_IllegalIndex()